/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * ResultadosTablas.java
 *
 * Created on 17-feb-2013, 16:52:20
 */
package sisvoto.vista;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import sisvoto.DAO.ConsultasBD;
import sisvoto.Reportes.Reportes;
import sisvoto.modelo.Eleccion;
import sisvoto.modelo.Elector;
import sisvoto.modelo.VotantesEleccion;
import sisvoto.modelo.VotoElectoral;
import sisvoto.modeloTablas.ModelTableElector;
import sisvoto.modeloTablas.ModelTableVOTO;

/*
 * @author Dianita
 */
public class ResultadosTablas extends javax.swing.JDialog {

    Eleccion eleccion;
    ArrayList<Elector> electoresfinales = null;
    ArrayList<VotoElectoral> votosfinales = null;
    String llamada;
   

    /** Creates new form ResultadosTablas */
    public ResultadosTablas(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }

    public ResultadosTablas(java.awt.Frame parent, boolean modal, Eleccion eleccion, String llamada) {
        super(parent, modal);
        this.eleccion = eleccion;
        this.llamada = llamada;
        initComponents();
        if (llamada.equals("ELECTORESSI")) {
            acualizarTablaElectorSI();
            lbltitulo.setText("Electores que Si Sufragaron");
            this.setTitle("ELECTORES QUE SI SUFRAGARON");
        }
        if (llamada.equals("ELECTORESNO")) {
            acualizarTablaElectorNO();
            lbltitulo.setText("Electores que No Sufragaron");
            this.setTitle("ELECTORES QUE NO SUFRAGARON");
        }
        if (llamada.equals("VOTO BLANCO")) {
            acualizarVotosBlancos();
            lbltitulo.setText("Votos en Blanco");
            this.setTitle("VOTOS BLANCOS");
        }
        if (llamada.equals("VOTO NULO")) {
            acualizarVotosNulos();
            lbltitulo.setText("Votos Nulos");
            this.setTitle("VOTOS NULOS");
        }
        if (llamada.equals("VOTO VALIDO")) {
            acualizarVotosValidos();
            lbltitulo.setText("Votos Válidos");
            this.setTitle("VOTOS VÁLIDOS");
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        imagePanel1 = new com.mycsistemas.swingec.panel.ImagePanel();
        curvesPanel1 = new com.mycsistemas.swingec.panel.CurvesPanel();
        lbltitulo = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblResultados = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        imagePanel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/''_10102012_1738.jpeg"))); // NOI18N

        curvesPanel1.setLayout(null);

        lbltitulo.setFont(new java.awt.Font("Georgia", 3, 18));
        lbltitulo.setForeground(new java.awt.Color(255, 255, 255));
        lbltitulo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lbltitulo.setText("Resultados Electorales");
        curvesPanel1.add(lbltitulo);
        lbltitulo.setBounds(30, 40, 390, 30);

        tblResultados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(tblResultados);

        curvesPanel1.add(jScrollPane1);
        jScrollPane1.setBounds(30, 90, 390, 200);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/DeleteRed.png"))); // NOI18N
        jButton1.setText("Salir");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        curvesPanel1.add(jButton1);
        jButton1.setBounds(230, 300, 130, 40);

        jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/print_32.png"))); // NOI18N
        jButton2.setText("Imprimir");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        curvesPanel1.add(jButton2);
        jButton2.setBounds(90, 300, 130, 40);

        javax.swing.GroupLayout imagePanel1Layout = new javax.swing.GroupLayout(imagePanel1);
        imagePanel1.setLayout(imagePanel1Layout);
        imagePanel1Layout.setHorizontalGroup(
            imagePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(curvesPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 436, Short.MAX_VALUE)
        );
        imagePanel1Layout.setVerticalGroup(
            imagePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(curvesPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 365, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imagePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imagePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
    this.dispose();
}//GEN-LAST:event_jButton1ActionPerformed

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// TODO add your handling code here:
    if (llamada.equals("ELECTORESSI")) {
        HashMap mapa = new HashMap();
        mapa.put("titulo", "ELECTORES QUE SI SUFRAGARON");
        String consulta = "SELECT "
                + "elec.Cedula, elec.Nombre, elec.Apellido, CONCAT(anio.Nombre, ' ', par.Nombre) AS Paralelo "
                + "FROM VotantesEleccion AS vot "
                + "LEFT JOIN Elector AS elec ON vot.elector_id=elec.id "
                + "LEFT JOIN anio_paralelo as aniop ON aniop.id=elec.anioparalelo_id "
                + "LEFT JOIN aniolectivo As anio ON anio.id=aniop.anio_id "
                + "LEFT JOIN paralelo AS par ON par.id = aniop.paralelo_id "
                + "WHERE vot.eleccion_id='" + eleccion.getId() + "' GROUP BY aniop.id, elec.id";

        try {
            try {
                this.dispose();
               
                new Reportes().reporteparametros("electores", consulta, mapa);

            } catch (JRException ex) {
                System.out.println(ex);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        }

    }

    if (llamada.equals("ELECTORESNO")) {
        HashMap mapa = new HashMap();
        mapa.put("titulo", "ELECTORES QUE NO SUFRAGARON");
       
        String consulta = "SELECT "
                + "elec.Cedula, elec.Nombre, elec.Apellido, CONCAT(anio.Nombre, ' ', par.Nombre) AS Paralelo "
                + "FROM EleccionElector AS elece "
                + "LEFT JOIN Elector AS elec ON elece.elector_id=elec.id "
                + "LEFT JOIN anio_paralelo as aniop ON aniop.id=elec.anioparalelo_id "
                + "LEFT JOIN aniolectivo As anio ON anio.id=aniop.anio_id "
                + "LEFT JOIN paralelo AS par ON par.id = aniop.paralelo_id "
                + "WHERE elece.eleccion_id='" + eleccion.getId() + "' AND elece.elector_id NOT IN (SELECT vot.elector_id FROM VotantesEleccion AS vot WHERE vot.eleccion_id='" + eleccion.getId() + "') "
                + "GROUP BY aniop.id, elec.id";

       
        try {
            try {
               this.dispose();
                new Reportes().reporteparametros("electores", consulta, mapa);

            } catch (JRException ex) {
                System.out.println(ex);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        }

    }


}//GEN-LAST:event_jButton2ActionPerformed
    /**
     * @param args the command line arguments
     */
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private com.mycsistemas.swingec.panel.CurvesPanel curvesPanel1;
    private com.mycsistemas.swingec.panel.ImagePanel imagePanel1;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lbltitulo;
    private javax.swing.JTable tblResultados;
    // End of variables declaration//GEN-END:variables

    private void acualizarTablaElectorSI() {

        ArrayList<VotantesEleccion> votantes = (ArrayList<VotantesEleccion>) new ConsultasBD().buscarPOR("VotantesEleccion", "eleccion", "'" + eleccion.getId() + "'");
        String cadena = "";
        if (!votantes.isEmpty()) {
            cadena = "'" + votantes.get(0).getElector().getId() + "' ";
            for (int i = 1; i < votantes.size(); i++) {
                cadena = cadena + " OR p.id='" + votantes.get(i).getElector().getId() + "' ";
            }
        }
        ArrayList<Elector> electors = (ArrayList<Elector>) new ConsultasBD().buscarPOR("Elector", "id", cadena);
        this.electoresfinales = electors;
        ModelTableElector modelo = new ModelTableElector(electors);
        tblResultados.setModel(modelo);
        tblResultados.updateUI();
    }

    private void acualizarTablaElectorNO() {
        ArrayList<Elector> electores = (ArrayList<Elector>) new ConsultasBD().buscarTodosConsulta("SELECT elec.elector FROM EleccionElector AS elec WHERE elec.eleccion='" + eleccion.getId() + "' AND elec.elector NOT IN (SELECT vot.elector FROM VotantesEleccion AS vot WHERE vot.eleccion='" + eleccion.getId() + "')");
        this.electoresfinales = electores;
        ModelTableElector modelo = new ModelTableElector(electores);
        tblResultados.setModel(modelo);
        tblResultados.updateUI();
    }

    private void acualizarVotosBlancos() {
        ArrayList<VotoElectoral> votos = (ArrayList<VotoElectoral>) new ConsultasBD().buscarPOR2("VotoElectoral", "eleccion", "'" + eleccion.getId() + "'", "voto", "'BLANCO'");
        this.votosfinales = votos;
        ModelTableVOTO modelo = new ModelTableVOTO(votos);
        tblResultados.setModel(modelo);
        tblResultados.updateUI();
    }

    private void acualizarVotosNulos() {
        ArrayList<VotoElectoral> votos = (ArrayList<VotoElectoral>) new ConsultasBD().buscarPOR2("VotoElectoral", "eleccion", "'" + eleccion.getId() + "'", "voto", "'NULO'");
        this.votosfinales = votos;
        ModelTableVOTO modelo = new ModelTableVOTO(votos);
        tblResultados.setModel(modelo);
        tblResultados.updateUI();
    }

    private void acualizarVotosValidos() {
        ArrayList<VotoElectoral> votos = (ArrayList<VotoElectoral>) new ConsultasBD().buscarTodosConsulta("Select p from VotoElectoral p where p.eleccion='" + eleccion.getId() + "' AND p.voto<>'NULO' AND p.voto<>'BLANCO'");
        this.votosfinales = votos;
        ModelTableVOTO modelo = new ModelTableVOTO(votos);
        tblResultados.setModel(modelo);
        tblResultados.updateUI();
    }
}
